Skip to content

Example Mod Content Update - #8

Merged
DrFair merged 95 commits into
DrFair:masterfrom
PgoTracker:master
Sep 8, 2026
Merged

Example Mod Content Update #8
DrFair merged 95 commits into
DrFair:masterfrom
PgoTracker:master

Conversation

@PgoTracker

@PgoTracker PgoTracker commented Feb 2, 2026

Copy link
Copy Markdown
Contributor

New additions

Mod infrastructure / loaders

  • ExampleModSettings
  • ExampleModBiomes
  • ExampleModBuffs
  • ExampleModCategories
  • ExampleModCommands
  • ExampleModEvents
  • ExampleModIncursions
  • ExampleModItems
  • ExampleModJobs
  • ExampleModMobs
  • ExampleModObjects
  • ExampleModPackets
  • ExampleModProjectiles
  • ExampleModRecipes
  • ExampleModResources
  • ExampleModSettlers
  • ExampleModTiles

AI

  • ExampleAI
  • ExampleAILeaf

Buffs

  • ExampleArmorSetBuff
  • ExampleArrowBuff

Events / Level events

  • ExampleEvent
  • ExampleLevelEvent

Tiles

  • ExampleGrassTile

Objects

  • ExampleBaseRockObject
  • ExampleConfigObject
  • ExampleGrassObject
  • ExampleJobObject
  • ExampleLevelEventObject
  • ExampleOreRockObject
  • ExampleTreeObject
  • ExampleTreeSaplingObject
  • ExampleWallWindowDoorObject
  • ExampleWoodChairObject
  • ExamplePressurePlateObject
  • ExampleWallTrapObject

Object entities

  • ExampleObjectEntity
  • ExampleJobObjectEntity

Items

Materials / misc items

  • ExampleStoneItem
  • ExampleOreItem
  • ExampleBarItem
  • ExampleLogItem
  • ExampleGrassSeedItem
  • ExampleBossSummonItem

Armor items

  • ExampleHelmetArmorItem
  • ExampleChestArmorItem
  • ExampleBootsArmorItem

Weapons

  • ExampleMeleeSwordWeapon
  • ExampleRangedBowWeapon
  • ExampleMagicStaffWeapon
  • ExampleSummonOrbWeapon

Trinkets

  • ExampleTrinketItem

Mobs / NPCs

  • ExampleBossMob
  • ExampleSettlerMob
  • ExampleSummonWeaponMob

Settlement

  • ExampleSettler
  • ExampleLevelJob

Projectiles

  • ExampleArrowProjectile

Presets

  • ExamplePreset
  • ExamplePresetCode

Networking / packets

  • ExampleConfigInteractPacket
  • ExamplePlaySoundPacket

Patches

  • JobFinderSafe
  • JobFinderStreamFoundJobslHandlersPatch

Loot / utility

  • ExampleLootTable

Introduces ExampleBossMob, ExampleOreItem, ExampleBaseRockObject, and ExampleOreRockObject, along with their textures and localization. Refactors example incursion classes into a dedicated incursion package, updates incursion logic to use new example objects and items, and registers new mobs, items, and objects in ExampleMod. Adds ExampleAI for mob behavior and updates localization for new content.
Merge pull request #6 from Jamesp1989SL/master
Introduces ExampleAI and ExampleAILeaf classes to provide custom AI behavior for mobs, including teleporting to incursion entrance and handling chasing and wandering logic. Updates ExampleBossMob to use the new ExampleAI implementation.
Moved sword and projectile weapon classes to a new tools subpackage. Added ExampleBarItem and its associated recipe and icon. Updated item and recipe registration to use new item IDs and structure. Renamed exampleore.png to exampleoreitem.png and updated references. Updated localization and added mob icons.
Introduces a new sound file and registers it with custom settings. Adds ExamplePlaySoundPacket to trigger sound playback on clients, and updates ExampleAILeaf to send this packet when teleporting mobs. Also fixes extraction item ID in ExampleIncursionBiome and moves ExamplePacket to a dedicated packets package.
Standardized item and object IDs by removing 'item' suffixes and updating all references accordingly. Added a new ExampleStoneItem class and registered it. Updated resource file names and localization keys to match new IDs.
Added logic to send a sound packet to clients when the AI leaf fails due to proximity, ensuring sounds are played for both teleport and non-teleport cases. Also added examplestone.png to resources.
Introduces landscaping recipes for examplebaserock and exampleorerock in ExampleRecipes.java. Updates textures for examplebaserock.png, exampleorerock.png, and exampleore.png to reflect new or improved visuals.
Introduces ExampleLootTable and ExamplePreset classes for custom loot and structure generation. Updates ExampleIncursionLevel to use the new preset, demonstrating how to place custom structures and fill them with loot during incursion level generation.
Refactored ExamplePreset to use a script-based preset application instead of manual tile/object placement. Added ExamplePresetCode for the original code-based preset logic, and introduced MissingTextureReporter utility for handling missing texture errors with logging and on-screen notifications.
Introduced ExampleWallWindowDoorObject with registration logic for wall, door, and window objects. Added corresponding textures and updated localization entries for the new objects. Updated ExampleMod to register these new objects during initialization.
Split ExampleMod initialization logic into dedicated loader classes for buffs, commands, incursions, items, mobs, objects, packets, projectiles, resources, and tiles. This improves code organization and readability. Also, moved ExampleRecipes and removed the unused MissingTextureReporter utility.
Introduces example helmet, chestplate, and boots armor items with set bonus buff, including textures and registration. Adds ExampleModCategories for item and crafting category trees, updates item and recipe loaders, and reorganizes example items and buffs into subpackages for better structure. Updates localization for new items, buffs, and categories.
Reworked ExampleModCategories to align with vanilla creative menu roots and subcategories, and updated item/crafting category registration for mod objects. Modified ExampleModObjects to assign new categories to registered objects and added a new object and recipe (exampleobject2) using the new mod-specific category. Updated localization keys to match new category names and structure.
Introduces new ExampleTreeObject, ExampleTreeSaplingObject, ExampleLogItem, and ExampleWoodChairObject classes, along with their registration in loaders and crafting recipes. Adds related item/object categories, updates localization, and includes new/updated resource images for these items and objects. Also renames ExampleSwordItem to ExampleSwordWeapon.
Added 'examplesapling' to the loot table and updated the English localization with 'examplechair'. Also updated the examplesound.ogg sound asset.
Expanded documentation and inline comments in ExampleLootTable, ExamplePreset, and ExamplePresetCode to clarify the structure, usage, and logic of presets and loot tables. These changes improve code readability and serve as a guide for developers learning how to create and use presets and loot tables in the mod.
@PgoTracker
PgoTracker marked this pull request as draft February 2, 2026 04:51
Add a new Gradle task (preAntialiasTextures) to run PreAntialiasTextures via Necesse.jar for processing all resource texture folders. The task is grouped under "necesse" and accepts the project resource directories as a semicolon-separated argument. Numerous PNG assets were updated as a result of running the pre-antialiasing process.
Introduce a new example grass system and reorganize map/incursion packages:

- Add ExampleBiome (examples.maps.biomes) and new ExampleModBiomes loader; ExampleMod now loads biomes.
- Implement overworld biome generation, spawn tables, generator stack and region placement logic.
- Add ExampleGrassTile (terrain splatter tile) with growth/spread, loot and rendering logic, plus splat texture.
- Add ExampleGrassObject (drops ExampleGrassSeed) and ExampleGrassSeedItem (places examplegrasstile).
- Register new tile/object/item in ExampleModTiles, ExampleModObjects and ExampleModItems.
- Add resource assets: item and object textures and tile splat PNGs.
- Update locale/en.lang with names for new tile, object and seed.
- Move incursion/map classes into examples.maps.incursion and rename ExampleTile package to examples.tiles; remove old incursion ExampleBiome file.

These changes add a complete example grass biome + gameplay loop (tile growth, objects, and seed drops) and tidy up package structure for map/incursion examples.
Introduce example event plumbing and a placeable object demonstrating LevelEvent and GameEvent usage. Adds ExampleLevelEvent (server-side level event) and ExampleEvent (lightweight game event), an ExampleLevelEventObject that spawns the level event and triggers the game event, and ExampleModEvents to register the level event and a listener. Updates ExampleMod to load the events and registers the new object in ExampleModObjects. Also adds sprites for the object and a locale entry (en.lang).
Introduce a summon weapon and associated summon mob plus event-driven demo changes. Added ExampleSummonOrbWeapon, ExampleSummonWeaponMob, ExampleObjectEntity and new item/mob textures; registered the summon mob and item, and added an iron anvil recipe for the summon orb. Expanded ExampleLevelEvent to support server-side damage/health-change logic and client-side particle effects, plus proper spawn packet serialization. Replaced direct object interaction with an ObjectEntity (ExampleObjectEntity) for tile-based triggers and refactored ExampleLevelEventObject to spawn that entity. Renamed projectile/sword classes and assets for clarity (ExampleProjectileWeapon -> ExampleMagicProjectileWeapon, ExampleSwordWeapon -> ExampleMeleeSwordWeapon) and updated item registrations, recipes, and locale keys/tooltips accordingly. Misc: minor formatting and comments updates across examples and resource additions/deletions for new sprites.
Introduce arrow ammo, a ranged bow, projectile, and associated regen buff plus assets and registry updates. Adds ExampleArrowItem (arrow stats and projectile lookup), ExampleRangedBowWeapon (bow stats/behavior), ExampleArrowProjectile (custom draw, target filtering, hit logic that applies a 4s regen buff and 50% drop chance), and ExampleArrowBuff (server-side heal over time: 5 HP per 250ms). Registers new items, ammo and projectiles in ExampleModItems/ExampleModProjectiles and registers the buff in ExampleModBuffs. Also renamed/moved several example classes/packages (ExampleArmorSetBonusBuff -> ExampleArmorSetBuff, ExampleMagicProjectileWeapon -> ExampleMagicStaffWeapon, ExampleProjectile moved into projectiles package) and updated localization entries and sprite resources.
Introduce mod settings and a small settler/job system plus related objects, packets and patches.

- Add ExampleModSettings (persistent mod config) and expose it as ExampleMod.settings via initSettings().
- Register new job type and level job (ExampleLevelJob) and load it from ExampleModJobs; add safe job-finder patch to avoid null handlers.
- Add settler/settler-mob classes (ExampleSettler, ExampleSettlerMob) and register them via ExampleModSettlers and ExampleModMobs.
- Add job-triggering world object and entity (ExampleJobObject, ExampleJobObjectEntity) that scans nearby tiles and enqueues ExampleLevelJob jobs.
- Add a config-driven object (ExampleConfigObject) and a client->server packet (ExampleConfigInteractPacket) that reads/updates ExampleModSettings and saves server settings.
- Enhance ExampleMod to load the new loaders (jobs, settlers, packets, objects) and small fixes/renames of package layouts for patches/presets/objectentity.
- Add ExampleArrowBuff improvements (server-side heal logic using gndData) and several resource images and localization entries for new items/objects/jobs.

These changes demonstrate using persistent settings, custom objects/object entities, jobs/settlers integration, packet handling, and a defensive patch for job finding.
Rename the patch from JobFinder_StreamFoundJobs_NoNullHandlersPatch to JobFinderStreamFoundJobslHandlersPatch
@PgoTracker
PgoTracker marked this pull request as ready for review February 11, 2026 03:12
Introduce boss-summoning and related world features: add ExampleBossSummonItem (+sprite), ExampleModJournal, trap object entity, wall-trap and pressure-plate objects, and a wall-trap sprite. Expose and register tile/object IDs in ExampleModTiles and ExampleModObjects, register the new consumable in ExampleModItems, and update locale entries.

Enhance biome support and loot: extend ExampleBiome with cave/deep-cave tiles/rock IDs, generator veins, chest-room presets that use rotating loot, and extra mob drops (including the boss summon item) for cave levels. Update ExampleLootTable with rotation and new loot entries.

Behaviour and misc fixes: simplify AI leaf to play a sound packet once, override boss mob collision filter, adjust ExampleBaseRockObject tool tier, add ExampleTrapObjectEntity and ExampleWallTrapObject logic, and reorder registration calls in ExampleMod.init to ensure correct load order. Also rename a patch class for JobFinder stream handlers.
Introduce an example trinket and wire it into the mod: add ExampleTrinketItem and ExampleTrinketBuff, register the trinket item and its buff in ExampleModItems and ExampleModBuffs, and include a sprite and localization tooltip.

Other changes:
- Add locale entries for the trinket and clean up a few tooltip/localization strings.
- Improve ExampleArrowBuff: clarify comments, rename variables for clarity, and simplify the heal timing/logic while preserving behavior (server-side heal event usage remains).
- Minor cleanup in ExampleAI (remove stray comment line) and add necessary imports.

Files added: ExampleTrinketItem.java, ExampleTrinketBuff.java, exampletrinketitem.png
Files modified: ExampleModItems.java, ExampleModBuffs.java, ExampleArrowBuff.java, ExampleAI.java, en.lang
…le rotation

Call settings.logLoadedSettings() during mod init and make the settings logger public so loaded settings are printed for debugging (added GlobalData import and exposed logLoadedSettings()).

Update example loot table to use a trinket item in the rotation (replace exampleboots with exampletrinketitem).

Enhance ExampleBossMob loot: add imports for LootItem and RotationLootItem, define a regular lootTable and a private rotating uniqueDrops with a privateLootTable, and implement getPrivateLootTable() so each player can receive a unique boss drop rotation. Add exampletrinketitem to ExampleLootTable rotation
Renamed and reorganized many example classes/IDs and improved example job logic and items for clarity. Key changes:

- Renamed item/object/buff IDs and usages for consistency (e.g. examplearmorsetbonus -> examplearmorsetbonusbuff, exampletrinketitem -> exampletrinket, pressure plate/trap IDs shortened).
- Renamed several tool classes/files and updated imports/registrations (ExampleRangedBowWeapon -> ExampleBowRangedWeapon, ExampleMagicStaffWeapon -> ExampleStaffMagicWeapon, ExampleSummonOrbWeapon -> ExampleOrbSummonWeapon); removed old ExampleMeleeSwordWeapon and added ExampleSwordMeleeWeapon.
- Job system updates: job type "weeding" -> "examplejobtype", level job registration updated, ExampleJobObjectEntity and ExampleSettlerMob updated to use new IDs.
- Reworked ExampleLevelJob: added Javadoc, saving behavior, comprehensive job sequence (MineObjectActiveJob) with reservation, pickup handling and removal on completion.
- Buff and armor set: adjusted registration ID and ExampleArmorSetBuff made passive/un-cancellable and documented; ExampleHelmetArmorItem updated to new buff ID.
- ExampleGrassTile: clarified behavior, added JavaDoc, cleaned loot logic and off-screen grow scheduling helper; several minor fixes and comments.
- Small cleanups: removed unused imports, updated comments/formatting, minor API casts/usage fixes, resource filename tweaks, and several class renames (presets/patches) for clarity.

Overall this commit standardizes naming, fixes registrations across loaders/usage sites, and expands example job/item implementations to be more complete and robust.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Boss summoning, command registration, AI termination, localization, and server-setting authorization have unresolved defects.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Expands the example mod into a comprehensive reference implementation with modular registration, world content, combat, settlement, networking, and configuration examples.

Changes:

  • Splits registration into dedicated loaders and reorganizes packages.
  • Adds biomes, presets, objects, equipment, mobs, AI, jobs, events, and recipes.
  • Expands localization, resources, settings, and loot systems.
File summaries
File Description
src/main/resources/locale/en.lang Expands localization entries.
src/main/java/examplemod/loaders/ExampleModTiles.java Registers custom tiles.
src/main/java/examplemod/loaders/ExampleModTech.java Registers crafting technology.
src/main/java/examplemod/loaders/ExampleModSettlers.java Registers the settler.
src/main/java/examplemod/loaders/ExampleModResources.java Loads textures and sound.
src/main/java/examplemod/loaders/ExampleModRecipes.java Registers content recipes.
src/main/java/examplemod/loaders/ExampleModProjectiles.java Registers projectiles.
src/main/java/examplemod/loaders/ExampleModPackets.java Registers network packets.
src/main/java/examplemod/loaders/ExampleModObjects.java Registers world objects.
src/main/java/examplemod/loaders/ExampleModMobs.java Registers mobs and NPCs.
src/main/java/examplemod/loaders/ExampleModJournal.java Adds journal entries.
src/main/java/examplemod/loaders/ExampleModJobs.java Registers settlement jobs.
src/main/java/examplemod/loaders/ExampleModItems.java Registers items and equipment.
src/main/java/examplemod/loaders/ExampleModIncursions.java Registers incursion content.
src/main/java/examplemod/loaders/ExampleModEvents.java Registers level events.
src/main/java/examplemod/loaders/ExampleModCommands.java Encapsulates command registration.
src/main/java/examplemod/loaders/ExampleModCategories.java Adds item categories.
src/main/java/examplemod/loaders/ExampleModBuffs.java Registers custom buffs.
src/main/java/examplemod/loaders/ExampleModBiomes.java Registers biome and preset.
src/main/java/examplemod/examples/tiles/ExampleTile.java Repackages and documents tile.
src/main/java/examplemod/examples/tiles/ExampleGrassTile.java Adds spreading grass tile.
src/main/java/examplemod/examples/settlement/settlers/ExampleSettler.java Defines recruitable settler.
src/main/java/examplemod/examples/settlement/jobs/ExampleLevelJob.java Implements grass-clearing job.
src/main/java/examplemod/examples/projectiles/ExampleProjectile.java Repackages example projectile.
src/main/java/examplemod/examples/projectiles/ExampleArrowProjectile.java Adds healing arrow projectile.
src/main/java/examplemod/examples/presets/ExampleWorldPreset.java Integrates procedural preset generation.
src/main/java/examplemod/examples/presets/ExamplePreset.java Defines reusable structure preset.
src/main/java/examplemod/examples/patches/ExampleMethodPatch.java Repackages method patch.
src/main/java/examplemod/examples/patches/ExampleConstructorPatch.java Repackages constructor patch.
src/main/java/examplemod/examples/packets/ExamplePacket.java Repackages and documents packet.
src/main/java/examplemod/examples/objects/ExampleWorkstationObject.java Adds multi-tile workstation.
src/main/java/examplemod/examples/objects/ExampleWorkstation2Object.java Adds workstation secondary tile.
src/main/java/examplemod/examples/objects/ExampleWallTrapObject.java Adds wall trap object.
src/main/java/examplemod/examples/objects/ExampleTreeSaplingObject.java Adds custom sapling.
src/main/java/examplemod/examples/objects/ExampleTreeObject.java Adds custom tree.
src/main/java/examplemod/examples/objects/ExamplePressurePlateObject.java Adds pressure plate.
src/main/java/examplemod/examples/objects/ExampleOreRockObject.java Adds ore-bearing rock.
src/main/java/examplemod/examples/objects/ExampleObject.java Reworks basic object example.
src/main/java/examplemod/examples/objects/ExampleJobObject.java Adds job-producing object.
src/main/java/examplemod/examples/objects/ExampleGrassObject.java Adds harvestable grass.
src/main/java/examplemod/examples/objects/ExampleEventTriggerObject.java Adds event-triggering object.
src/main/java/examplemod/examples/objects/ExampleConfigObject.java Adds interactive settings object.
src/main/java/examplemod/examples/objects/ExampleBaseRockObject.java Adds base rock object.
src/main/java/examplemod/examples/objectentity/ExampleTrapObjectEntity.java Implements arrow trap behavior.
src/main/java/examplemod/examples/objectentity/ExampleObjectEntity.java Implements event trigger behavior.
src/main/java/examplemod/examples/objectentity/ExampleJobObjectEntity.java Scans and creates jobs.
src/main/java/examplemod/examples/mobs/ExampleSummonWeaponMob.java Adds summon companion mob.
src/main/java/examplemod/examples/mobs/ExampleMob.java Adds teleporting custom AI.
src/main/java/examplemod/examples/mobs/ExampleHumanMob.java Adds recruitable human NPC.
src/main/java/examplemod/examples/mobs/ExampleBossMob.java Adds boss combat behavior.
src/main/java/examplemod/examples/maps/incursion/ExampleIncursionLevel.java Expands incursion generation.
src/main/java/examplemod/examples/maps/incursion/ExampleIncursionBiome.java Uses custom boss and ore.
src/main/java/examplemod/examples/maps/biomes/ExampleBiome.java Adds full biome generation.
src/main/java/examplemod/examples/items/trinkets/ExampleTrinketItem.java Adds spelunker trinket.
src/main/java/examplemod/examples/items/tools/ExampleSwordMeleeWeaponItem.java Adds melee weapon.
src/main/java/examplemod/examples/items/tools/ExampleStaffMagicWeaponItem.java Reworks magic staff.
src/main/java/examplemod/examples/items/tools/ExampleOrbSummonWeaponItem.java Adds summon weapon.
src/main/java/examplemod/examples/items/tools/ExampleBowRangedWeaponItem.java Adds ranged weapon.
src/main/java/examplemod/examples/items/materials/ExampleStoneItem.java Adds placeable stone material.
src/main/java/examplemod/examples/items/materials/ExampleOreItem.java Adds ore material.
src/main/java/examplemod/examples/items/materials/ExampleMaterialItem.java Relocates base material.
src/main/java/examplemod/examples/items/materials/ExampleLogItem.java Adds log material.
src/main/java/examplemod/examples/items/materials/ExampleGrassSeedItem.java Adds grass seed.
src/main/java/examplemod/examples/items/materials/ExampleBarItem.java Adds refined bar.
src/main/java/examplemod/examples/items/ExamplePotionItem.java Removes old potion class.
src/main/java/examplemod/examples/items/ExampleMaterialItem.java Removes old material class.
src/main/java/examplemod/examples/items/ExampleHuntIncursionMaterialItem.java Removes obsolete incursion item.
src/main/java/examplemod/examples/items/consumable/ExamplePotionItem.java Adds relocated potion.
src/main/java/examplemod/examples/items/consumable/ExampleFoodItem.java Repackages food item.
src/main/java/examplemod/examples/items/consumable/ExampleBossSummonItem.java Adds boss summon consumable.
src/main/java/examplemod/examples/items/armor/ExampleHelmetArmorItem.java Adds set helmet.
src/main/java/examplemod/examples/items/armor/ExampleChestArmorItem.java Adds regenerative chest armor.
src/main/java/examplemod/examples/items/armor/ExampleBootsArmorItem.java Adds armor boots.
src/main/java/examplemod/examples/items/ammo/ExampleArrowItem.java Adds healing arrow ammunition.
src/main/java/examplemod/examples/ExampleSwordItem.java Removes old sword class.
src/main/java/examplemod/examples/ExampleObject.java Removes old object class.
src/main/java/examplemod/examples/ExampleLootTable.java Adds shared loot table.
src/main/java/examplemod/examples/ExampleBiome.java Removes minimal biome class.
src/main/java/examplemod/examples/events/ExampleLevelEvent.java Adds synchronized level event.
src/main/java/examplemod/examples/buffs/ExampleTrinketBuff.java Adds trinket modifier.
src/main/java/examplemod/examples/buffs/ExampleBuff.java Repackages base buff.
src/main/java/examplemod/examples/buffs/ExampleArrowBuff.java Implements gradual healing.
src/main/java/examplemod/examples/buffs/ExampleArmorSetBuff.java Adds armor-set bonuses.
src/main/java/examplemod/examples/ai/ExampleBossAI.java Implements staged boss AI.
src/main/java/examplemod/examples/ai/ExampleAINode.java Adds teleport AI node.
src/main/java/examplemod/examples/ai/ExampleAI.java Composes hostile mob AI.
src/main/java/examplemod/ExampleModSettings.java Adds persistent mod settings.
src/main/java/examplemod/ExampleMod.java Orchestrates modular initialization.
Review details
  • Files reviewed: 88/158 changed files
  • Comments generated: 5
  • Review effort level: Balanced

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/main/java/examplemod/examples/ai/ExampleAINode.java Outdated
Comment thread src/main/java/examplemod/examples/objects/ExampleConfigObject.java
Comment thread src/main/java/examplemod/ExampleMod.java Outdated
Comment thread src/main/java/examplemod/examples/items/consumable/ExampleBossSummonItem.java Outdated
Comment thread src/main/resources/locale/en.lang

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

It contains stale-job and teleport defects, an unauthorized persistent configuration mutation, missing resources/localization, and described packets that were not implemented.

Review details

Suppressed comments (6)

Previously missed (4) — in code that hasn't changed since the last review.

src/main/java/examplemod/examples/ai/ExampleAINode.java:62

  • The candidate list includes the mob's current tile. Because this implementation's teleport always returns true, randomly selecting that tile cancels the projectile hit and starts the 10-second cooldown without moving the mob. Exclude the current tile so a successful result always represents a real reposition.
    src/main/java/examplemod/examples/settlement/jobs/ExampleLevelJob.java:82
  • getObject() is explicitly nullable here, but target.object is dereferenced unconditionally when building the activity message. If the grass disappears after the job is selected, sequence creation will throw instead of abandoning the stale job; return no sequence/remove the job when target is null before constructing the message.
    src/main/java/examplemod/loaders/ExampleModBuffs.java:19
  • This visible set-bonus buff relies on the default buff texture lookup, but there is no resources/buffs/examplearmorsetbonusbuff.png (the directory only contains examplebuff.png). Client resource loading/display will therefore request a missing asset; add the matching icon or override texture loading to use an existing one.
    src/main/java/examplemod/loaders/ExampleModPackets.java:10
  • The PR description lists ExampleConfigInteractPacket and ExamplePlaySoundPacket as additions, but this loader registers only the pre-existing ExamplePacket, and neither promised packet class exists in the source tree. Add and register both packets, or update the PR scope if they are intentionally excluded.

src/main/java/examplemod/examples/objects/ExampleConfigObject.java:89

  • Any regular player who can interact with this craftable object can increment and persist a server-wide setting. Server-side range validation does not provide authorization, so multiplayer users can alter configuration and force repeated disk writes; gate this action behind an admin/owner permission or make it non-persistent/player-scoped.
    src/main/resources/locale/en.lang:8
  • The ore-rock object is registered as exampleorerock, so its display name is looked up as [object].exampleorerock. This exampleore entry instead duplicates the item key and leaves the placeable ore rock without its localization.
  • Files reviewed: 88/158 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

@DrFair
DrFair merged commit a7dae50 into DrFair:master Sep 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants